package com.prs.crm.action;

import java.io.InputStream;
import java.io.UnsupportedEncodingException;

import org.apache.struts2.ServletActionContext;

public class DownloadAction {
//	private final static String DOWNLOADFILEPATH = "/wenjian/";
//	// 文件名参数变量
//	private String fileName;
//
//	public String getFileName() {
//		return fileName;
//	}
//
//	public void setFileName(String fileName) {
//		this.fileName = fileName;
//	}
//
//	public InputStream downloadFile;
//
//	// 从下载文件原始存放路径读取得到文件输出流
//	public InputStream getDownloadFile() {
//		downloadFile = null;
//		try {
//			downloadFile = ServletActionContext.getServletContext()
//					.getResourceAsStream(DOWNLOADFILEPATH + getDownloadChineseFileName());
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return downloadFile;
//	}
//
//	// 如果下载文件名为中文，进行字符编码转换
//	public String downloadChineseFileName;
//	public String getDownloadChineseFileName() {
//		downloadChineseFileName = fileName;
//
//		try {
//			downloadChineseFileName = new String(
//					downloadChineseFileName.getBytes(), "iso8859-1");
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//
//		return downloadChineseFileName;
//	}
//
//	public String execute() {
//		return "success";
//	}
	
	private String fileName; 

	   public void setFileName(){ 
	   //得到请求下载的文件名 
	   String fname=ServletActionContext.getRequest().getParameter("fileName"); 
	   System.out.println("文件名字fname:"+fname);
	   try { 
	   /* 
	* 对fname参数进行UTF-8解码,注意:实际进行UTF-8解码时会使用本地编码，本机为GBK。 
	* 这里使用request.setCharacterEncoding解码无效. 
	* 只有解码了getDownloadFile()方法才能在下载目录下正确找到请求的文件 
	* */   
	   fname = new String(fname.getBytes("ISO-8859-1"), "UTF-8"); 

	   } catch (Exception e) { 
	   e.printStackTrace(); 
	}   
	this.fileName=fname;   
	} 

	   /* 
	* @getFileName 
	* 此方法对应的是struts.xml文件中的： 
	* <param name="contentDisposition">attachment;filename="${fileName}"</param> 
	* 这个属性设置的是下载工具下载文件时显示的文件名， 
	* 要想正确的显示中文文件名，我们需要对fileName再次编码 
	* 否则中文名文件将出现乱码，或无法下载的情况 
	* */ 
	public String getFileName() throws UnsupportedEncodingException { 
		System.out.println("文件名字fileName:"+fileName);   
	fileName=new String(fileName.getBytes(),"ISO-8859-1"); 
	   
	return fileName; 
	} 

	   /* 
	   * @getDownloadFile 
	   * 此方法对应的是struts.xml文件中的： 
	   * <param name="inputName">downloadFile</param> 
	   * 返回下载文件的流，可以参看struts2的源码 
	   * */ 
	public InputStream getDownloadFile() { 
	   
	   this.setFileName(); 
		System.out.println("文件名字InputStream:"+ServletActionContext.getServletContext().getResourceAsStream("/" + fileName));   
	   return ServletActionContext.getServletContext().getResourceAsStream("/" + fileName); 
	} 

	public String execute() {
		return "success";
	}
}
